#pragma once

struct Coord
{
	float q0;
	float q1;
	float q2;
};

struct ControlVector
{
	float t;
	float c0;
	float c1;
	float c2;
};

struct Coord_Control_Bounds
{
	float q0_max;
	float q0_min;
	float q1_max;
	float q1_min;
	float q2_max;
	float q2_min;

	float c0_max;
	float c0_min;
	float c1_max;
	float c1_min;
	float c2_max;
	float c2_min;
	float t_max;
	float t_min;
	float t_delta;

	float c_infinity;
};

struct _gpu_ticket
{
	Coord q_start;
	float c_start;

	Coord q_target;
	float r_target;
	float c_target;
};

struct _gpu_result
{
	int n_val;
	float v1;
	float v2;

	float c_new;
	float c_step;
	ControlVector ctrl;
	Coord q_new;
};